Øyvind Kolås [Tue, 29 Aug 2017 21:27:45 +0000 (23:27 +0200)]
babl/babl-format: add formats with custom RGB spaces to format db
Øyvind Kolås [Tue, 29 Aug 2017 18:21:32 +0000 (20:21 +0200)]
tools/babl-benchmark: exclude conversions to self from average
The fast path the checks for source == dst, and replace with memcpy works,
including these memcpy aliases makes the barchart harder to read and the
average further from the median.
Øyvind Kolås [Sat, 26 Aug 2017 19:55:08 +0000 (21:55 +0200)]
babl: move matrix code to new file babl-matrix.h
Øyvind Kolås [Sat, 26 Aug 2017 16:56:12 +0000 (18:56 +0200)]
babl: remove unused babl_space_get_chromaticities
Øyvind Kolås [Fri, 25 Aug 2017 23:14:28 +0000 (01:14 +0200)]
babl: make cache loading/parsing valgrind clean
Øyvind Kolås [Fri, 25 Aug 2017 22:37:24 +0000 (00:37 +0200)]
babl: initialize used BablModel struct member data on init
Øyvind Kolås [Thu, 24 Aug 2017 18:39:03 +0000 (20:39 +0200)]
babl: iterate on public space/icc API
Øyvind Kolås [Wed, 23 Aug 2017 23:16:57 +0000 (01:16 +0200)]
babl-icc: length of string in descr should include \0
Edward E [Tue, 22 Aug 2017 21:31:56 +0000 (16:31 -0500)]
tools: Use rand when random is unavailable
borrowed from
c1f075f22c70de54c2b04ca5df008a5e406d3ca9
Øyvind Kolås [Wed, 23 Aug 2017 20:43:34 +0000 (22:43 +0200)]
babl-icc: detect 2.2 and 1.8 gammas LUTs
Øyvind Kolås [Wed, 23 Aug 2017 20:16:51 +0000 (22:16 +0200)]
babl-icc: implement LUT TRC place holder code
Øyvind Kolås [Wed, 23 Aug 2017 19:52:28 +0000 (21:52 +0200)]
babl-icc: detect sRGB LUT TRC and use babl's native sRGB TRC
Also add serialization of sRGB as an on-the fly generated 1024 element LUT.
Øyvind Kolås [Wed, 23 Aug 2017 18:22:24 +0000 (20:22 +0200)]
babl-icc: implement reading and writing of LUTs for TRC
Øyvind Kolås [Wed, 23 Aug 2017 17:53:43 +0000 (19:53 +0200)]
babl-icc: create struct for abstracting ICC file access
This also makes the ICC parsing re-entrant by getting rid of global variables.
Øyvind Kolås [Tue, 22 Aug 2017 12:00:21 +0000 (14:00 +0200)]
tools: add a tool for testing icc profile writing
Øyvind Kolås [Tue, 22 Aug 2017 11:53:19 +0000 (13:53 +0200)]
babl-icc: change priority of way to get matrix
Øyvind Kolås [Tue, 22 Aug 2017 10:23:02 +0000 (12:23 +0200)]
babl: add icc generator
Add API to generate concise ICC profiles in memory from babl-spaces, seems
complete apart for tRCs.
Øyvind Kolås [Tue, 22 Aug 2017 02:35:48 +0000 (04:35 +0200)]
babl: add babl-trc.h to Makefile.am
Øyvind Kolås [Tue, 22 Aug 2017 02:28:05 +0000 (04:28 +0200)]
babl: remove lingering reference to rgb-constants.h in makefile
Øyvind Kolås [Mon, 21 Aug 2017 16:11:43 +0000 (18:11 +0200)]
tools: add -e option to babl-icc-dumper, that shows exact fixed point values
Øyvind Kolås [Sun, 20 Aug 2017 23:40:25 +0000 (01:40 +0200)]
babl: use typedefs and structs for fixed point numbers
also adds code to print exact decimal representations of numbers found in icc
files, can be useful for tuning constants fed in - our observing differences,
it turns out that ~6digits of precision is enough for double float and fixed point 32bit to differ in values in icc profiles.
Øyvind Kolås [Sun, 20 Aug 2017 20:39:04 +0000 (22:39 +0200)]
tools: add babl-icc-dump
This commandline tool contains code to parse the v4 elements babl-icc currently
doesn't make use of. It loads data from the ICC profile directly into double
precision floats.
CIE xy red: 0.640009 0.330022
CIE xy green: 0.300008 0.600015
CIE xy blue: 0.150011 0.059998
Is due to IEEE double precision floats not being as precise as the fixed point
values in the profile, which are *exactly*:
CIE xy red: 0.6400 0.3300
CIE xy green: 0.3000 0.6000
CIE xy blue: 0.1500 0.0600
Øyvind Kolås [Sun, 20 Aug 2017 19:09:21 +0000 (21:09 +0200)]
babl: shorten missing fish message to mostly fit 80col
Øyvind Kolås [Sun, 20 Aug 2017 19:05:52 +0000 (21:05 +0200)]
tools/babl-benchmark: add unicode barchart to results
Øyvind Kolås [Sun, 20 Aug 2017 16:08:46 +0000 (18:08 +0200)]
babl: icc parser, fix misname s15f16
Øyvind Kolås [Sun, 20 Aug 2017 11:00:18 +0000 (13:00 +0200)]
tools: add a throughput benchmark
Øyvind Kolås [Sun, 20 Aug 2017 00:26:43 +0000 (02:26 +0200)]
babl: adapt conversion searcher for remodels
Øyvind Kolås [Sat, 19 Aug 2017 21:43:32 +0000 (23:43 +0200)]
babl: proof icc parsing against corrupt data
Øyvind Kolås [Sat, 19 Aug 2017 21:08:03 +0000 (23:08 +0200)]
babl: add babl_space_rgb_icc
Øyvind Kolås [Sat, 19 Aug 2017 12:54:13 +0000 (14:54 +0200)]
docs: remove draft roadmap for custom primaries
Øyvind Kolås [Sat, 19 Aug 2017 02:19:37 +0000 (04:19 +0200)]
babl: add babl_space_rgb_matrix
Øyvind Kolås [Sat, 19 Aug 2017 01:53:57 +0000 (03:53 +0200)]
babl: add handling of BABL_RGB_OVERRIDE environment variable
Øyvind Kolås [Sat, 19 Aug 2017 01:53:16 +0000 (03:53 +0200)]
babl: return the linear TRC when 1.0 is asked for numerically
Øyvind Kolås [Sat, 19 Aug 2017 01:18:29 +0000 (03:18 +0200)]
babl: get rid of RGB_LUMINANCE constants
Øyvind Kolås [Sat, 19 Aug 2017 00:45:14 +0000 (02:45 +0200)]
s/babl_space_new/babl_space_rgb_chromaticities
Øyvind Kolås [Sat, 19 Aug 2017 00:44:30 +0000 (02:44 +0200)]
babl: respond to gcc warnings
Øyvind Kolås [Sat, 19 Aug 2017 00:37:22 +0000 (02:37 +0200)]
babl: make some of the new space API internal for now
Øyvind Kolås [Fri, 18 Aug 2017 23:20:46 +0000 (01:20 +0200)]
add BablTRC class, that handles gamma or sRGB
Done this way, it is easily extendable to also handle LUTs.
Øyvind Kolås [Fri, 18 Aug 2017 21:41:55 +0000 (23:41 +0200)]
extensions/CIE: replace rgb-to-xyz with one from source space
Øyvind Kolås [Fri, 18 Aug 2017 21:31:59 +0000 (23:31 +0200)]
tests: add a test verifying that buffers are converted between RGB spaces
Øyvind Kolås [Fri, 18 Aug 2017 21:31:22 +0000 (23:31 +0200)]
make use of babl space for reference computations
Øyvind Kolås [Fri, 18 Aug 2017 21:15:43 +0000 (23:15 +0200)]
add BablSpace for specifying chromaticities/TRC
Øyvind Kolås [Thu, 17 Aug 2017 00:05:40 +0000 (02:05 +0200)]
babl: util.h fix double include guard
Øyvind Kolås [Fri, 18 Aug 2017 20:46:26 +0000 (22:46 +0200)]
Add the BablConversion as first argument of all conversions
This is neccesary to be able to access state of source/destination from within
registered conversions.
Øyvind Kolås [Tue, 15 Aug 2017 11:55:32 +0000 (13:55 +0200)]
post-release version bump
Øyvind Kolås [Tue, 15 Aug 2017 11:46:32 +0000 (13:46 +0200)]
release 0.1.30
Jehan [Tue, 4 Jul 2017 14:44:16 +0000 (16:44 +0200)]
babl: clean up various syntax bugs.
Trailing whitespaces, tabs, etc.
Jehan [Tue, 4 Jul 2017 12:05:34 +0000 (14:05 +0200)]
configure: do not link with pthread on Android.
It turns out Bionic (Android C library) has its own implementation of
pthread. With this minor change, babl is fully cross-compilable for
Android.
Ell [Fri, 23 Jun 2017 11:30:40 +0000 (07:30 -0400)]
palette: make the conversion hash table volatile
... to avoid the theoretical possiblity of hash table entires being
read more than once during conversion, defying atomicity. Very,
*very* paranoid, but what the hell :P
Ell [Wed, 21 Jun 2017 17:53:08 +0000 (13:53 -0400)]
palette: make palette conversion thread safe
Conversion from RGBA u8 to an 8-bit palette format caches conversion
results in a hash table, belonging to the palette model. Currently,
manipulation of the hash table is not thread safe -- when multiple
threads convert to the same palette format concurrently, the result
may be wrong. In particular, there is a race condition when two
different colors that share the same hash are converted concurrently.
Fix this by changing the hash table layout, so that it can be
modified atomically. We assume that aligned 32-bit writes are
atomic.
Note that the new layout is only suitable for palettes with up to
256 colors, but this is all we use the hash table for ATM anyway.
Add a regression test.
Jehan [Fri, 16 Jun 2017 14:33:46 +0000 (16:33 +0200)]
extensions: just some minor cleaning of trailing whitespaces.
Øyvind Kolås [Tue, 13 Jun 2017 07:23:43 +0000 (09:23 +0200)]
babl-internal: tidy up some log messages
Guiu Rocafort [Tue, 13 Jun 2017 07:21:29 +0000 (09:21 +0200)]
bug #783704, Check db NULL to avoid segfault if babl not initiated,
Ell [Sun, 11 Jun 2017 22:56:18 +0000 (18:56 -0400)]
tests: fix typo in hsva.c
"rgba to hsva" -> "hsva to rgba"; got swapped by commit
c8b5eee3f86a49bd093929f0bd16ef780de88c67. Thanks to Edward_E for
catching that.
Ell [Thu, 8 Jun 2017 13:20:29 +0000 (09:20 -0400)]
Bug 780016 - Conversion path between nonpremultiplied formats ...
.. may pass through a premultiplied format, losing color information
of fully transparent pixels
Add a few pixels with zero alpha to the test pixels array, to penalize
such paths. 16 pixels seem to be enough for the conversions tested,
using the default tolerance.
Add a regression test.
Ell [Thu, 8 Jun 2017 13:09:42 +0000 (09:09 -0400)]
babl-gen-test-pixels: update floating-point format of output ...
... to match commit
37947d19cd217ef5a04da46627a60ccde8925122.
Ell [Thu, 8 Jun 2017 13:02:35 +0000 (09:02 -0400)]
tests: add CHECK_CONV_FLOAT to common.inc
Like CHECK_CONV, but for floating point destination types.
Use CHECK_CONV_FLOAT in hsva.c and hsl.c, instead of custom
CHECK_CONV implementations. To be used by another test soon.
Øyvind Kolås [Tue, 30 May 2017 21:48:07 +0000 (23:48 +0200)]
post release version bump
Øyvind Kolås [Tue, 30 May 2017 21:39:50 +0000 (23:39 +0200)]
release 0.1.28
Øyvind Kolås [Mon, 15 May 2017 20:05:21 +0000 (22:05 +0200)]
extensions: add two fast paths from cairo formats
This is to babls corresponding premultiplied but in different swizzling order
8bit and float data.
Ell [Tue, 9 May 2017 23:16:29 +0000 (19:16 -0400)]
CIE: add Lab <-> LCH fast paths
Øyvind Kolås [Tue, 9 May 2017 17:03:04 +0000 (19:03 +0200)]
configure.ac: post-release version bump
Øyvind Kolås [Tue, 9 May 2017 16:30:34 +0000 (18:30 +0200)]
configure: 0.1.26 release
Øyvind Kolås [Tue, 9 May 2017 16:30:16 +0000 (18:30 +0200)]
NEWS: update for 0.1.26
SBP [Thu, 4 May 2017 13:10:04 +0000 (15:10 +0200)]
Make HCY conversions symmetric.
Øyvind Kolås [Fri, 28 Apr 2017 13:45:24 +0000 (15:45 +0200)]
Revert "HCY: add build bits neccesary for compilation"
This reverts commit
82195e28e3d9f733216f364d20719b213367515f.
The HCY extensions is not ready for use, since the model does not provide
symmmetric conversions. Disabling build and install of it.
pippin@yogi:~/src/babl/tests$ BABL_PATH=../extensions/.libs ./models
HCYA
test: 0.713 -0.170 -0.020 0.033
clipped: -0.505 6.011 -0.259 0.033
trnsfrmd: 137.334 -0.503 10.838 0.033
HCYA
test: 0.335 0.130 -0.029 -0.066
clipped: 0.335 0.130 -0.029 -0.066
trnsfrmd: 0.335 0.130 -0.029 -0.066
HCYA
test: 0.455 0.145 0.287 0.409
clipped: 0.455 0.145 0.287 0.409
trnsfrmd: 0.455 0.145 0.287 0.409
HCYA
test: 0.689 -0.154 -0.011 0.077
clipped: -0.413 3.381 -0.223 0.077
trnsfrmd: 55.965 -0.372 4.757 0.077
HCYA is not symmetric
HCY
test: 0.713 -0.170 -0.020 0.033
clipped: -0.505 6.011 -0.259 1.000
trnsfrmd: 137.334 -0.503 10.838 1.000
HCY
test: 0.335 0.130 -0.029 -0.066
clipped: 0.335 0.130 -0.029 1.000
trnsfrmd: 0.335 0.130 -0.029 1.000
HCY
test: 0.455 0.145 0.287 0.409
clipped: 0.455 0.145 0.287 1.000
trnsfrmd: 0.455 0.145 0.287 1.000
HCY
test: 0.689 -0.154 -0.011 0.077
clipped: -0.413 3.381 -0.223 1.000
trnsfrmd: 55.965 -0.372 4.757 1.000
HCY is not symmetric
Øyvind Kolås [Fri, 28 Apr 2017 13:19:10 +0000 (15:19 +0200)]
HCY: add build bits neccesary for compilation
Elle Stone [Sat, 28 Jan 2017 14:15:33 +0000 (09:15 -0500)]
Remove white space from CIE and group code
sections according to precision to make it easier for people to
figure out which lines of code go with which types of conversions.
Edward E [Fri, 7 Apr 2017 06:47:45 +0000 (01:47 -0500)]
babl-cache: fix previous cache file persisting on Win32
Cygwin's rename() won't overwrite an existing file, so remove() it first
Øyvind Kolås [Wed, 15 Mar 2017 21:36:12 +0000 (22:36 +0100)]
do not print missing fast path message when tolerance is very small
During the build of examples for GEGL when hashes are being cheched, the
BABL_TOLERANCE is set to 0.0 on purpose. Complaints about missing fast-paths
here are noise.
Victor Ananjevsky [Sun, 12 Mar 2017 19:01:38 +0000 (20:01 +0100)]
fish-cache: fix cache path on linux
make babl on linux honor $XDG_CACHE_HOME variable, falling back to using
$HOME/.cache
Øyvind Kolås [Thu, 9 Feb 2017 11:46:55 +0000 (12:46 +0100)]
use non gcc-specific floating point notation
As reported in bug #778072 - HP UX ANSI C compiler refuses to compile
the shorthand floating point constant spec used by babl. Regenerated
file of constants by Richard Loyd <rkl@connect.org.uk>
Øyvind Kolås [Thu, 9 Feb 2017 11:44:07 +0000 (12:44 +0100)]
bug #778071 improve portability to hp-ux native compiler
Øyvind Kolås [Tue, 31 Jan 2017 23:34:33 +0000 (00:34 +0100)]
post release version bump
Øyvind Kolås [Tue, 31 Jan 2017 23:29:08 +0000 (00:29 +0100)]
configure.ac: 0.1.24 release
Øyvind Kolås [Tue, 31 Jan 2017 23:02:42 +0000 (00:02 +0100)]
babl: generate db in temporary file
Fixing some of - but not all race conditions shown by concurrency stress test.
Jehan [Sat, 28 Jan 2017 19:11:35 +0000 (20:11 +0100)]
docs: s/ftp/https/ and s/downloads/download/ on the download location.
Øyvind Kolås [Sat, 28 Jan 2017 19:04:24 +0000 (20:04 +0100)]
docs: update download location
Øyvind Kolås [Fri, 13 Jan 2017 11:32:10 +0000 (12:32 +0100)]
util: add float versions of non optimized TRC functions
Øyvind Kolås [Fri, 13 Jan 2017 10:02:11 +0000 (11:02 +0100)]
pow-24: use own inlined frexpf implementation
Cannot beat sqrtf which can be an inlined instruction, but the function call
overhead of frexpf can be eliminated.
Øyvind Kolås [Fri, 13 Jan 2017 02:45:35 +0000 (03:45 +0100)]
extensions/CIE: do cbrt computation in single precision float
This is sufficient for our purposes, and gives a ~40% boost for
the affecte CIE Lab float conversions.
Øyvind Kolås [Fri, 13 Jan 2017 02:45:06 +0000 (03:45 +0100)]
extensions/CIE: use cbrtf from musl instead of libm
The inlining alone gives a ~6% performance boost.
Øyvind Kolås [Thu, 12 Jan 2017 20:39:11 +0000 (21:39 +0100)]
extensions/CIE: make some constants single precision float
Speeds up the 32bit float versions of conversions by a bit more than 5% without
changing the precision of 32bit floating point since the constants are of
similar magnitude to single precision IEEE float.
Øyvind Kolås [Tue, 3 Jan 2017 17:00:29 +0000 (18:00 +0100)]
extensions: enable a couple more simple float<->double paths
Øyvind Kolås [Sat, 31 Dec 2016 19:26:35 +0000 (20:26 +0100)]
make fish hashes less likely to fail
Øyvind Kolås [Sat, 31 Dec 2016 18:15:29 +0000 (19:15 +0100)]
hash-table: simplify integer hashing
Øyvind Kolås [Fri, 16 Dec 2016 14:01:34 +0000 (15:01 +0100)]
configure: make the f16c test for half-float instructions stricter
Øyvind Kolås [Fri, 16 Dec 2016 00:43:34 +0000 (01:43 +0100)]
extensions/cairo: implement cairo display path from YA float
Øyvind Kolås [Fri, 16 Dec 2016 00:01:43 +0000 (01:01 +0100)]
extensions/cairo: implement rgb8 to cairo32, speeding up RGB linear half display
Øyvind Kolås [Thu, 15 Dec 2016 23:39:08 +0000 (00:39 +0100)]
extensions: add fast paths going from gray to premul alpha rgb - for resampling
Øyvind Kolås [Thu, 15 Dec 2016 23:16:42 +0000 (00:16 +0100)]
tools/babl-verify: print the substeps of chosen paths
Øyvind Kolås [Thu, 15 Dec 2016 22:01:02 +0000 (23:01 +0100)]
babl-verify.sh: rm cache before running
Øyvind Kolås [Thu, 15 Dec 2016 20:01:45 +0000 (21:01 +0100)]
cairo: add fast paths for u8 and u16 gray gamma
Øyvind Kolås [Thu, 15 Dec 2016 16:39:50 +0000 (17:39 +0100)]
babl-fish-path: permit searching for one step longer fish paths
but only if no BABL_PATH_LENGTH long or shorter valid paths were found,
this enables some desirable 16bit integer and floating point conversions.
Øyvind Kolås [Thu, 15 Dec 2016 16:39:28 +0000 (17:39 +0100)]
babl-verify.sh: add CIE Lab formats to verification
Øyvind Kolås [Thu, 15 Dec 2016 15:43:07 +0000 (16:43 +0100)]
babl-verify.sh: only recompile extensions, not tools
Øyvind Kolås [Thu, 15 Dec 2016 15:40:28 +0000 (16:40 +0100)]
tools: add shell script to aid in development of fast paths
Added a shell script which takes a base format and profiles/debugs relevant
babl conversions for this format. The script recompiles the extensions
folder.
Usage:
$ babl ./tools/babl-verify.sh "RGBA half"
to get information about fast paths for half precision floating point, as
used by GEGL/GIMP.
Øyvind Kolås [Thu, 15 Dec 2016 15:40:02 +0000 (16:40 +0100)]
tools/babl-verify: print selected fast path if a third argument is provided
Øyvind Kolås [Thu, 15 Dec 2016 12:03:10 +0000 (13:03 +0100)]
extensions: implement bitshifting swizzlers for cairo/u8
Øyvind Kolås [Thu, 15 Dec 2016 01:41:32 +0000 (02:41 +0100)]
extensions/sse2-float: add gamma and premul as single step